// C中常见的组合模式就是2级链表的遍历。
// 系统有一个设备链，每个节点挂接同一类型的设备，这样就形成了2级链表。
// 如果需要对所有设备进行遍历，就需要用到该设计模式。

typedef struct _DEV_NODE  
{  
    struct _DEV_NODE* next;  
    struct _DEV_NODE* child;
    void *data;
    int (*dev_lookup)(SDEV_NODE *link, funcp process);
}SDEV_NODE;  

int my_dev_lookup(SDEV_NODE *link, funcp process)  
{  
    while(NULL != link)
    {
        process(link);
        while(NULL != link->child)
             dev_lookup(link->child, process);
        link = link->next;
    }
}  
